package com.lagou.StudentsManageSystem;

import com.lagou.client.ClientInitClose;
import com.lagou.client.ClientScanner;
import com.lagou.model.User;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 编程实现学生管理系统主界面的绘制和实现功能
 */
public class StuManageView {

    /**
     * 合成复用原则
     */
    private ClientInitClose cic;

    /**
     * 通过构造方法实现成员变量的初始化
     * @param
     */
    public StuManageView(ClientInitClose cic){
        this.cic = cic;
    }

    public void manageMainPage() throws IOException, ClassNotFoundException {

        //打印管理系统界面并提示输入对应数字
        while (true) {
            System.out.println("\n\n          欢迎进入学生信息管理系统");
            System.out.println("-----------------------------------------");
            System.out.println("  [1]添加学生信息           [2]查找学生信息");
            System.out.println("  [3]修改学生信息           [4]删除学生信息");
            System.out.println("                [5]退出系统             ");
            System.out.println("-----------------------------------------");

            System.out.println("请输入对应功能编号：");
            int choose = ClientScanner.getScanner().nextInt();
            //使用switc case结构使用不同方法，对应不同功能
            switch (choose) {
                case 1:
                    cic.getPs().println("add");
                    add();
                    break;
                case 2:
                    cic.getPs().println("found");
                    found();
                    break;
                case 3:
                    cic.getPs().println("set");
                    set();
                    break;
                case 4:
                    cic.getPs().println("del");
                    del();
                    break;
                case 5:
                    //退出系统
                    cic.getPs().println("exit");
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入错误，请重新选择");
            }
        }
    }


    /**
     * 自定义成员方法实现添加功能
     */
    public void add() throws IOException {

        //提示输入学生账户信息
        System.out.println("请输入需要添加的学生用户名");
        String name = ClientScanner.getScanner().next();
        System.out.println("请输入需要添加的密码");
        String password = ClientScanner.getScanner().next();
        //利用输入的信息构造User对象
        User user = new User(name, password);
        //发送到服务器判断
        cic.getOos().writeObject(user);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if("success".equals(s)){
            System.out.println("添加成功");
        }else if("fail".equals(s)){
            System.out.println("用户名或密码错误，请核实");
        }
    }


    /**
     * 自定义成员方法实现查找功能
     */
    public void found() throws IOException, ClassNotFoundException {

        //提示输入学生账户信息
        System.out.println("请输入需要查找的学生用户名");
        String name = ClientScanner.getScanner().next();
        //发送到服务器判断
        cic.getPs().println(name);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            //通过对象输入流获取对象信息并打印
            User user = (User) cic.getOis().readObject();
            System.out.println("查找到的学生信息为：" + user);
        } else if ("fail".equals(s)) {
            System.out.println("用户名或密码错误，请核实");
        }
    }


    /**
     * 自定义成员方法实现修改功能
     */
    public void set() throws IOException {
        //提示输入学生账户信息
        System.out.println("请输入需要修改的学生用户名");
        String name = ClientScanner.getScanner().next();
        System.out.println("请输入该学生账户密码");
        String password = ClientScanner.getScanner().next();
        //利用输入的信息构造User对象
        User user = new User(name, password);
        //发送到服务器判断
        cic.getOos().writeObject(user);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            System.out.println("请输入修改后的学生用户名");
            String name1 = ClientScanner.getScanner().next();
            System.out.println("请输入修改后的学生账户密码");
            String password1 = ClientScanner.getScanner().next();
            //利用输入的信息构造User对象
            User user1 = new User(name1, password1);
            //发送到服务器进行修改
            cic.getOos().writeObject(user1);
            System.out.println("修改成功");
        } else if ("fail".equals(s)) {
            System.out.println("用户名或密码错误，请核实");
        }
    }

    /**
     * 自定义成员方法实现删除功能
     */
    public void del() throws IOException {

        //提示输入学生账户信息
        System.out.println("请输入需要删除的学生用户名");
        String name = ClientScanner.getScanner().next();
        System.out.println("请输入该学生账户密码");
        String password = ClientScanner.getScanner().next();
        //利用输入的信息构造User对象
        User user = new User(name, password);
        //发送到服务器判断
        cic.getOos().writeObject(user);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            System.out.println("删除成功");
        } else if ("fail".equals(s)) {
            System.out.println("用户名或密码错误，请核实");
        }
    }
}
